package com.cx.zyx.modulebiz.news.service;


import com.cx.zyx.modulebiz.news.service.dto.TopNewsDTO;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface NewsStatsService {

    /**
     * 增加阅读量
     * @param newsId 新闻ID
     */
    void incrementViews(Long newsId);

    /**
     * 增加点赞量
     * @param newsId 新闻ID
     */
    void incrementLikes(Long newsId);

    /**
     * 增加评论量
     * @param newsId 新闻ID
     */
    void incrementComments(Long newsId);

    /**
     * 获取某篇新闻的统计信息（阅读量、点赞量、评论量）
     * @param newsId 新闻ID
     * @return 包含统计信息的 Map
     */
    Map<String, Long> getStats(Long newsId);

    /**
     * 手动设置某个统计字段的值
     * @param newsId 新闻ID
     * @param field 字段名（如 "views", "likes", "comments"）
     * @param value 要设置的值
     */
    void setStat(Long newsId, String field, Long value);

    /**
     * 获取最热门的 N 篇新闻
     * @param topN 要获取的篇数
     * @return 最热门的 N 篇新闻的 ID 集合
     */
    List<TopNewsDTO> getTopViewedNews(int topN);
}

